#pragma once

#include <iostream>
#include <memory>
#include <vector>
#include <map>
#include <sstream>
#include <fstream>
#include <ostream>
#include <istream>
#include <chrono>
#include <filesystem>
#include <sstream>
#include <algorithm>
namespace fs = std::filesystem;

#include "imgui/imgui.h"
#include "imgui/imgui_internal.h"
#include "imgui/Editor.h"

namespace ImGui
{
    struct Layer
    {
        ImGui::Editor m_Editor;

        bool m_Open = true;
        bool m_Rendering = true;
        bool m_IsFocused;
        bool m_IsHovered;

        std::string m_Title = "default Title";
        ImGuiWindowFlags m_Flag;

        Layer() = default;
        Layer(const std::string& title, ImGuiWindowFlags flag = 0);
        bool MenuItem();

        virtual void ViewFunc();
        virtual void HandleFunc();
        void Inst();
        void Handle();

        std::vector<std::shared_ptr<ImGui::Layer>> m_Children;
    
    };
};
